package com.java.common;

import java.util.regex.Pattern;

import org.apache.commons.lang.StringUtils;

/**
 * 用于过滤html代码
 * @author wjh
 * @version  Aug 16, 2010 12:01:24 PM
 * 此类中的方法带有局限性，不要在其他类中调用此类中的方法
 */
public class HtmlFunctions {

	/**
	 * 过滤字符串，过滤后可能返回空字符串
	 * @param content
	 * @return
	 */
    public static String filterHtml(String content) {
    	if(StringUtils.isBlank(content)) return "";
    	
    	String filterReg="</?[^>]*>|&lt;[\\s\\S]*?&gt;";  //去除html标签
    	String filterReg2="&nbsp;|\\s{2,}|\\n|\\r";       //去除空格，换行
		
    	Pattern pat = Pattern.compile(filterReg);
		String html = pat.matcher(content).replaceAll("");
		
		pat = Pattern.compile(filterReg2);
		html = pat.matcher(html).replaceAll("");
		
//		if(StringUtils.isBlank(html)) return content;
		
		return html;
    }
    
    /**
     * 截取字符串
     * @param content
     * @param beginIndex
     * @param endIndex
     * @return
     */
    public static String subString(String content,Integer beginIndex,Integer endIndex) {
    	String con=filterHtml(content);
    	if(null!=con&&endIndex>con.length())
    		return con;
		return con.substring(beginIndex, endIndex);
    } 
    

    /**
     * 截取字符串2
     * @param content 内容
     * @param str 超过位数后替代内容
     * @param beginIndex 
     * @param endIndex
     * @return
     */
    public static String subStringB(String content,String str,Integer beginIndex,Integer endIndex) {
    	if(StringUtils.isBlank(content)) return "";
    	
    	String con = filterHtml(content);
    	if(StringUtils.isBlank(con)){
    		con = content.trim();
    		//return content; 
    	}
    	if(endIndex>con.length()){
    		return con;
    	}
		return con.substring(beginIndex, endIndex)+str;
    } 
    
    
    /**
     * 转义所有的双引号
     * @param str 需转义字符串
     * @return 
     */
    public static String repA(String str) {
    	if(null==str) return "";
    	return str.replaceAll("\"", "\\\\\"");
    }
    
    
}
